package com.gem.day18;

import java.lang.reflect.Method;
import java.util.Arrays;

/**
 * 自定义注解测试
 */
//默认属性名value可以省略,否则不能;如果有多个属性,同样不能省略
//@MyAnnotation(value = "abc")
@MyAnnotation(value = "abc", numbers = { 4, 5, 6 })
public class TestMyAnnotation {

	public static void main(String[] args) {
		try {
			//1.获取类
			Class<?> c = TestMyAnnotation.class;
			//2.获取方法
			Method method = c.getMethod("method");
			//3.获取方法上的注解
			MyAnnotation annotation = method.getAnnotation(MyAnnotation.class);
			//4.获取注解的属性值
			System.out.println(annotation.value());
			System.out.println(Arrays.toString(annotation.numbers()));
			//TODO...
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	//通过@Target限制了注解的使用位置
	//@MyAnnotation
	public TestMyAnnotation() {

	}

	//如果属性提供了默认值,则使用注解时不一定要显式的定义该属性
	@MyAnnotation("abc")
	public void method() {

	}
}
